# coding=utf-8
"""python dictionary """

d = dict([('a', 1),('b', 2)])
print d

d['c'] = 3
print d

d['C'] = 3
print d

d['C'] = [1]
print d

del d['C']
print d

d.update({'d':4})
print d

d[(1, 2)] = 3
print d
for k in d:
    print 'k:', k, type(k)
    
d.clear()
print d


lst = list('abcdef')
print lst

sub_lst = lst[1:3]
print sub_lst

sub_lst = lst[1:-2]
print sub_lst

lst.append('g')
print lst

lst.insert(2, 'h')
print lst

lst.extend(['i', 'j', 'k'])
print lst

lst.append(['i', 'j', 'k'])
print lst

lst.remove(['i', 'j', 'k'])
print lst


print lst.index('c')
print 'd' in lst

# 那么使用 tuple 有什么好处呢？

# Tuple 比 list 操作速度快。如果您定义了一个值的常量集，并且唯一要用它做的是不断地遍历它，请使用 tuple 代替 list。
# 如果对不需要修改的数据进行 “写保护”，可以使代码更安全。使用 tuple 而不是 list 如同拥有一个隐含的 assert 语句，说明这一数据是常量。如果必须要改变这些值，则需要执行 tuple 到 list 的转换 (需要使用一个特殊的函数)。
# 还记得我说过 dictionary keys 可以是字符串，整数和 “其它几种类型”吗？Tuples 就是这些类型之一。Tuples 可以在 dictionary 中被用做 key，但是 list 不行。实际上，事情要比这更复杂。Dictionary key 必须是不可变的。Tuple 本身是不可改变的，但是如果您有一个 list 的 tuple，那就认为是可变的了，用做 dictionary key 就是不安全的。只有字符串、整数或其它对 dictionary 安全的 tuple 才可以用作 dictionary key。
# Tuples 可以用在字符串格式化中，我们会很快看到。
 
# Tuple 可以转换成 list，反之亦然。内置的 tuple 函数接收一个 list，并返回一个有着相同元素的 tuple。而 list 函数接收一个 tuple 返回一个 list。从效果上看，tuple 冻结一个 list，而 list 解冻一个 tuple。 



